package holdem.pokergui;

import holdem.Card;
import java.util.List;
import java.util.Map;

/**
 *
 * @author qipai, adders
 */
public interface MessageReceiverInGUI {
    //===================
    // Other Player's Action
    //===================
    public void bet(Integer playerID, Integer amount);
    //public void raise(Integer playerID, Integer amount);
    public void fold(Integer playerID);
    public void check(Integer playerID);
    public void joinAccpted(Integer playerID);
    public void quit(Integer playerID);
    /**
     * Called when the player lose all money or (s)he quits
     * @param playerID
     */
    //public void inactive(Integer playerID);
    //===================
    // Dealer's Action
    //===================
    //public void phaseChange(Integer newPhase); //(phase number == table cards)
    public void showDown();
    /**
     * Called after a showdown
     * cards.size() == 2
     * @param cards
     */
    public void revealPlayerHand(Map<Integer, List<Card>> cardMap);
    //public void splitPot();
    public void dealTableCard(holdem.Card newTableCard);
    public void dealHandCard(holdem.Card handCards[]);
    /**
     * This will be called if a player wins money (after showdown or split)
     * @param playerID
     * @param amount
     */
    public void moneyGain(Integer playerID, Integer amount);
    public void changeTurn(Integer tableLocation);
    public void newPlayer(Integer playerID, String playerName, Integer money);
    public void gameStart();
    public void gameEnd();
    public void smallBlindIncrease(Integer playerID, Integer newAmount);
    public void bigBlindIncrease(Integer playerID, Integer newAmount);
    public void dealerChange(Integer playerID);

}
